<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //把一个字符串中的字符重新排列生成新的字符串，例如, abc 总共有6种排列 (abc, acb, bac, bca, cab, cba)。
    var str1 = 'abc'
    function getPerputation2(str1) {
        //
        if (str1.length == 1) return [str1]   //递归出口

        let res = []
        for (let i = 0; i < str1.length; i++) {
            //当前的字符
            let fisrt_str = str1[i]
            //截出当前值的剩下字符的排列。明白这里需要的是 剩下字符的排列数组。
            let other_str = getPerputation2(str1.slice(0, i) + str1.slice(i + 1))

            //返回的是数组
            let str = other_str.map(d => fisrt_str + d)

            res = res.concat(str)
        }
        return res
    }
    var res = getPerputation2(str1)
    console.log(res);
</script>